# Driver nuker param ( [string]$ManufacturerName ) if ($ManufacturerName -eq '') { $ManufacturerName = Read-Host "Specify driver manufacturer to purge" } if ($ManufacturerName -eq '') { exit } Write-Host "Searching devices ..." $devices = pnputil /enum-devices /format CSV | ConvertFrom-Csv | Where-Object { $_.ManufacturerName -eq $ManufacturerName } | Select-Object InstanceId, DeviceDescription, Classname, Status, DriverName $devices | Format-Table Write-Host "Searching drivers ..." $drivers = pnputil /enum-drivers /format CSV | ConvertFrom-Csv | Where-Object { $_.ProviderName -eq $ManufacturerName } | Select-Object DriverName, OriginalName, ProviderName, DriverVersion $drivers | Format-Table if ($($devices).Count -eq 0 -and $($drivers).Count -eq 0) { exit } Write-Host -NoNewLine "Delete all devices and drivers found? (y/N)" $key = [console]::ReadKey().KeyChar Write-Host "" if ($key -ne 'y' -and $key -ne 'Y') { exit } foreach ($device in $devices) { $devId = $device.InstanceId Write-Host "Removing device '$devId'" pnputil /remove-device "$devId" /force } foreach ($driver in $drivers) { $infId = $driver.DriverName Write-Host "Removing driver '$infId'" pnputil /delete-driver "$infId" /uninstall }